/*******************************************************************************
  * 文件：NetComm_DeviceSet.c
  * 作者：djy
  * 版本：v1.0.0
  * 日期：2020.12.04
  * 说明：wifi设置设备
*******************************************************************************/
#include "NetComm_DeviceSet.h"
#include "NetComm_Cmd.h"
#include "StateMachine.h"
#include "TimingCtrl.h"
#include "FireCtrl.h"
#include "DevInfor.h"
#include "OS_Timer.h"
#include "Hardware_IO.h"

/*******************************************************************************
  * 函数名: NetCommDevSetPower
  * 功  能: 设备开关机
  * 参  数：U16 u16SetData：0熄火  
  * 返回值：无
  * 说  明：WiFi设置，只能关机，关闭所有灶头，停止所有定时模式
*******************************************************************************/
int NetCommDevSetPower(U16 u16SetData)
{
    if(u16SetData == 0x0000)
    {        
        // 左灶关火
        LeftStoveFireOff();

		// 判断定时模式是否运行
        if(ON == Timing_CheckLeftTimingRun())
        {
            // 左定时运行中，结束定时
            Timing_StopLeftTiming();
        }

        // 右灶关火
        RightStoveFireOff();

        // 判断定时模式是否运行
        if(ON == Timing_CheckRightTimingRun())
        {
            // 定时运行中，结束定时
            Timing_StopRightTiming();
        }

        // 中灶关火
        MidStoveFireOff();

        // 判断定时模式是否运行
        if(ON == Timing_CheckMidTimingRun())
        {
            // 定时运行中，结束定时
            Timing_StopMidTiming();
        }
        
        return 1;
    }

    return 0;
}

/*******************************************************************************
  * 函数名: NetCommDevSetLeftStvFire
  * 功  能: 左灶灶火设置
  * 参  数：U16 u16SetData：0熄火  
  * 返回值：无
  * 说  明：WiFi设置，只能熄火
*******************************************************************************/
int NetCommDevSetLeftStvFire(U16 u16SetData)
{
    if(u16SetData == 0x0000)
    {
        // 左灶关火
        LeftStoveFireOff();

		// 判断定时模式是否运行
        if(ON == Timing_CheckLeftTimingRun())
        {
            // 左定时运行中，结束定时
            Timing_StopLeftTiming();
        }
        
        return 1;
    }
    return 0;
}

/*******************************************************************************
  * 函数名: NetCommDevSetRightStvFire
  * 功  能: 右灶灶火设置
  * 参  数：U16 u16SetData：0熄火  
  * 返回值：无
  * 说  明：WiFi设置，只能熄火
*******************************************************************************/
int NetCommDevSetRightStvFire(U16 u16SetData)
{
    if(u16SetData == 0x0000)
    {
        // 右灶关火
        RightStoveFireOff();

        // 判断定时模式是否运行
        if(ON == Timing_CheckRightTimingRun())
        {
            // 定时运行中，结束定时
            Timing_StopRightTiming();
        }
        
        return 1;
    }
    return 0;
}

/*******************************************************************************
  * 函数名: NetCommDevSetMidStvFire
  * 功  能: 中灶灶火设置
  * 参  数：U16 u16SetData：0熄火  
  * 返回值：无
  * 说  明：WiFi设置，只能熄火
*******************************************************************************/
int NetCommDevSetMidStvFire(U16 u16SetData)
{
    if(u16SetData == 0x0000)
    {
        // 中灶关火
        MidStoveFireOff();

        // 判断定时模式是否运行
        if(ON == Timing_CheckMidTimingRun())
        {
            // 定时运行中，结束定时
            Timing_StopMidTiming();
        }
        
        return 1;
    }
    return 0;
}

/*******************************************************************************
  * 函数名: NetCommDevSetLeftTimingTime
  * 功  能: 左灶定时时间设置
  * 参  数：U16 u16SetData：目标定时时间
  * 返回值：无
  * 说  明：左灶开火时，才能修改定时时间
*******************************************************************************/
int NetCommDevSetLeftTimingTime(U16 u16SetData)
{
    // 查询左灶火是否开启
    if(eFIRE_ON == Dev_GetLeftFireState())
    {
        // 修改定时时间
        return Timing_ChangeLeftTimingTime(u16SetData);
    }
    return 0;
}

/*******************************************************************************
  * 函数名: NetCommDevSetMidTimingTime
  * 功  能: 中灶定时时间设置
  * 参  数：U16 u16SetData：目标定时时间
  * 返回值：Bool bRet:      TRUE:支持设置，FALSE:不支持设置，返回无效帧
  * 说  明：中灶开火时，支持修改目标定时时间
*******************************************************************************/
int NetCommDevSetMidTimingTime(U16 u16SetData)
{
    // 查询中灶火是否开启
    if(eFIRE_ON == Dev_GetMidFireState())
    {
        // 修改定时时间
        return Timing_ChangeMidTimingTime(u16SetData);
    }
    return 0;
}

/*******************************************************************************
  * 函数名: NetCommDevSetLeftTimingTime
  * 功  能: 右灶定时时间设置
  * 参  数：U16 u16SetData：目标定时时间
  * 返回值：无
  * 说  明：右灶开火时，支持修改目标定时时间
*******************************************************************************/
int NetCommDevSetRightTimingTime(U16 u16SetData)
{
    // 查询右灶火是否开启
    if(eFIRE_ON == Dev_GetRightFireState())
    {
        // 修改定时时间
        return Timing_ChangeRightTimingTime(u16SetData);
    }
    return 0;
}

